//实现 pow(x, n) ，即计算 x 的 n 次幂函数（即，xⁿ）。 
//
// 
//
// 示例 1： 
//
// 
//输入：x = 2.00000, n = 10
//输出：1024.00000
// 
//
// 示例 2： 
//
// 
//输入：x = 2.10000, n = 3
//输出：9.26100 
//
// 示例 3： 
//
// 
//输入：x = 2.00000, n = -2
//输出：0.25000
//解释：2⁻² = 1/2² = 1/4 = 0.25 
//
// 
//
// 提示： 
//
// 
// -100.0 < x < 100.0 
// -2³¹ <= n <= 2³¹-1 
// -10⁴ <= xⁿ <= 10⁴ 
// 
//
// 
//
// 注意：本题与主站 50 题相同：https://leetcode-cn.com/problems/powx-n/ 
//
// 
//
// Related Topics 递归 数学 👍 443 👎 0


package LeetCode.editor.cn;


/**
 * @author ldltd
 * @date 2025-04-28 16:12:08
 * @description LCR 134.Pow(x, n)
 
 */
 
public class ShuZhiDeZhengShuCiFangLcof {
    public static void main(String[] args) {
    //测试代码
    ShuZhiDeZhengShuCiFangLcof fun = new ShuZhiDeZhengShuCiFangLcof();
    Solution solution= fun.new Solution();
    
    }

//leetcode submit region begin(Prohibit modification and deletion)
class Solution {
        //当 n 是 Integer.MIN_VALUE（即 -2147483648）时，n = -n 会导致溢出，
        // 因为 Integer.MIN_VALUE 的绝对值比 Integer.MAX_VALUE 大 1。
    //可以用一个long来接收后处理
    public double myPow(double x, int n) {
        if (n == Integer.MIN_VALUE) {
            x = x * x;
            n = n / 2;
        }
        if (n < 0) {
            x = 1 / x;
            n = -n;
        }
        double res = 1;
        while (n != 0) {
            if ((n & 1) == 1) res = res * x;
            x *= x;
            n >>= 1;
        }
        return res;
    }
}
//leetcode submit region end(Prohibit modification and deletion)

}
